<?php

require_once (PASTA_SMARTY . 'ConfigSmarty.class.php');
require_once (PASTA_ADBDO_ALL . 'adodb-pager.inc.php');
require_once (PASTA_CONEXAO . 'Conexao.class.php');
require_once (CAMINHO_SERVIDOR . 'JSON.php');

class imprimiConteudoEspecifico {

    function __construct() {
        
    }

    public function getObjSmarty() {
        if ($this->objSmarty == null)
            $this->objSmarty = ConfigSmarty::getConfigSmarty();
        return $this->objSmarty;
    }

    public function getConexao() {
        if ($this->objCon == null)
            $this->objCon = Conexao::getConexao();
        return $this->objCon;
    }

    public function getObjCripty() {
        if ($this->objCripty == null)
            $this->objCripty = new Cryptografa();
        return $this->objCripty;
    }

    protected function getObjJson() {
        if ($this->objJason == null)
            $this->objJason = new Json();
        return $this->objJason;
    }

    public function getConteudoSistema($params = null, $smarty = null) {
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_ESPECIFICO . "sistema.tpl");
        return $html;
    }

    public function getRodapeSistema($params = null, $smarty = null) {
        $html = $smarty->fetch(PASTA_CONTEUDO_ESPECIFICO . "rodapeSistema.tpl");
        return $html;
    }

    public function getMensagensSimplesLista($smarty, $titulo, $msg, $tipo) {
        $smarty->assign("TITULO_MSG", $titulo);
        $smarty->assign("MSG", $msg);
        $smarty->assign("TIPO_MSG", $tipo);
    }

    public function getMensagensSimples($smarty, $paramMsg) {
        $paramMsg = explode("&", $paramMsg);
        $smarty->assign("TITULO_MSG", str_replace("msgTitulo=", "", $paramMsg[0]));
        $smarty->assign("MSG", str_replace("msg=", "", $paramMsg[1]));
        $smarty->assign("TIPO_MSG", str_replace("tipoMsg=", "", $paramMsg[2]));
    }

    public function getListaPadrao($params = null, $smarty = null) {
        $parametros = self::getObjCripty()->decrypt($params['parametros']);
        $tabela = $params['tabela'];
        $idTabela = $params['campo_id'];
        $registro = $params['id_registro'];
        $acao = $params['acao'];
        $colunas = $params['colunas'];
        $campos = $params['campos_busca'];
        $camposSelect = $params['campos_select'];
        $orderby = $params['orderby'];
        $form_tpl = $params['form_tpl'];
        $class_coluna_acoes = $params['class_coluna_acoes'];
        $txt_insercao = $params['txt_insercao'];
        if (isset($params['acoes_list']) && !empty($params['acoes_list'])) {
            $acoesList = explode(',', $params['acoes_list']);
        }
        if ($acao == "edit" || $acao == "incluir") {
            //Funcoes::debuga($acao, $params);
            if (!empty($registro)) {
                self::getObjSmarty()->assign("EDICAO",true);
                $sql = "SELECT * FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                $dados = self::getConexao()->getAll($sql);
                $dados = Funcoes::validaDatasPt($dados[0]);
                //método para preencher o formulário
                Funcoes::preparaDadosFormTipoTela($dados, $registro, self::getObjSmarty());
            }
            if (is_file(PASTA_CONTEUDO_MODEL . $form_tpl . ".tpl")) {
                $tpl = PASTA_CONTEUDO_MODEL . $form_tpl . ".tpl";
            } else if (is_file(PASTA_CONTEUDO_ESPECIFICO . $form_tpl . ".tpl")) {
                $tpl = PASTA_CONTEUDO_ESPECIFICO . $form_tpl . ".tpl";
            } else {
                self::getObjSmarty()->assign("TITULO_ERRO", "TPL não encontrado!");
                self::getObjSmarty()->assign("MSG_ERRO", $form_tpl . ".tpl não encontrado, favor criá-lo para o devido funcionamento do sistema.");
                $tpl = PASTA_CONTEUDO_MODEL . "erro.tpl";
            }
            if (!empty($registro)) {
                self::getObjSmarty()->assign("PARAMSESP", "&tipo_form=2");
            } else {
                self::getObjSmarty()->assign("PARAMSESP", "?tipo_form=2");
            }
            self::getObjSmarty()->assign("URLATUAL", URL_SITE_ATUAL . "acao/" . $acao . "/id/" . $registro . "/");
            self::getObjSmarty()->assign("URLEXECUTE", URL);
            self::getObjSmarty()->assign("URL_IMG_SALVAS", URL_PASTA_IMAGENS_SALVAS);
            self::getObjSmarty()->assign("URL_IMG", URL_PASTA_IMAGENS);
            self::getObjSmarty()->assign("URL_ARQUIVOS_SALVOS", URL_PASTA_ARQUIVOS_SALVOS);
            self::getObjSmarty()->assign("CANCELA", URL_SITE_ATUAL);
            self::getObjSmarty()->assign("PASTABANCO", PASTA_BANCO);
            //Funcoes::debuga($_SERVER);
            self::getMensagensSimples(self::getObjSmarty(), $parametros);
            $html = self::getObjSmarty()->fetch($tpl);

            return $html;
        } else {
            if ($acao == "exc") {
                $sql = "DELETE FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                if (self::getConexao()->Execute($sql)) {
                    self::getMensagensSimplesLista($smarty, "Excluído!", "Dados excluído com sucesso", "alert-success");
                } else {
                    self::getMensagensSimplesLista($smarty, "Impossível Excluír!", "Esse registro não pode ser excluído.", "alert-error");
                }
            }
            if ($acao == "status") {
                $queryst = "SELECT status FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                $st = end(self::getConexao()->getRow($queryst));
                $st = ($st == 1) ? 0 : 1;
                $sql = "UPDATE " . $tabela . " SET status='" . $st . "' WHERE " . $idTabela . "=" . $registro;
                if (self::getConexao()->Execute($sql)) {
                    self::getMensagensSimplesLista($smarty, "Alterado!", "Status alterado com sucesso.", "alert-success");
                } else {
                    self::getMensagensSimplesLista($smarty, "Error!", "Status não foi alterado.", "alert-error");
                }
            }
            $paranslinks[] = array('link' => 'acao/edit/id/', 'img' => URL_PASTA_IMAGENS . 'icons/table_edit.png', 'txt' => 'Alterar', 'tipo_link' => 'padrao');
            $paranslinks[] = array('link' => 'acao/status/id/', 'img' => URL_PASTA_IMAGENS . 'icons/status_online.png', 'txt' => 'Alterar status', 'tipo_link' => 'padrao');
            $paranslinks[] = array('link' => 'acao/exc/id/', 'img' => URL_PASTA_IMAGENS . 'icons/cross.png', 'txt' => 'Excluir', 'tipo_link' => 'padrao');
            if (is_array($acoesList)) {
                foreach ($acoesList as $acs) {
                    $acsParam = explode(':', $acs);
                    if ($acsParam[3] == "fancybox") {
                        $paranslinks[] = array('link' => $acsParam[0], 'img' => URL_PASTA_IMAGENS . 'icons/' . $acsParam[1] . '.png', 'txt' => $acsParam[2], 'tipo_link' => $acsParam[3]);
                    } else {
                        $paranslinks[] = array('link' => 'acao/' . $acsParam[0] . '/id/', 'img' => URL_PASTA_IMAGENS . 'icons/' . $acsParam[1] . '.png', 'txt' => $acsParam[2], 'tipo_link' => $acsParam[3]);
                    }
                }
            }
            $pag = (empty($_GET['pag']) ? 1 : $_GET['pag']);
            $busca = $_GET['buscar'];
            $limit = QUANT_LINHAS_TABELA;

            $sql = "SELECT " . $camposSelect . " FROM " . $tabela . " WHERE  " . Funcoes::getCondicaoBuscar($campos, $busca) . " " . $orderby . " " . Funcoes::getPaginacaoLimite($pag, $limit);
            $queryCount = "SELECT count(*) FROM " . $tabela . " WHERE " . Funcoes::getCondicaoBuscar($campos, $busca);
            $total = end(self::getConexao()->getRow($queryCount));
            $categorias = self::getConexao()->getAll($sql);
            $html = Funcoes::gerarTabelaSimples($categorias, $paranslinks, $colunas, $class_coluna_acoes);
            $html.=Funcoes::getPaginacao($pag, $total, $limit, "buscar/" . $busca);
            return Funcoes::getFerramentaBuscaTabela($busca,$txt_insercao) . $html;
        }
    }

    public function getFormClientes($params = null, $smarty = null) {
        if (isset($_GET['msg']) && !empty($_GET['msg'])) {
            self::getMensagens($_GET['msg'], $smarty, "Contato não foi enviado!", "Tente novamente mais tarde.", "Contato enviado com sucesso!", "Entraremos em contato em breve por e-mail ou telefone.", "Erro ao registrar um contato, função getFormContato");
        }
        $sql = "SELECT * FROM tb_dc_clientes WHERE id_cliente=" . $params['id_cliente'];
        $dados = self::getConexao()->getRow($sql);
        $smarty->assign("INFO_CONTATO", $dados);
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "formcontato_portal.tpl");
        Funcoes::debuga($dados);
    }

    public function getCabecalhoSistema($params = null, $smarty = null) {

        $html = $smarty->fetch(PASTA_CONTEUDO_ESPECIFICO . "cabecalhoSistema.tpl");
        return $html;
    }

    public function getMenuSistema($params = null, $smarty = null) {
        $sql = "SELECT * FROM tb_area WHERE status=1 ORDER BY ordem limit 7";
        $dados = self::getConexao()->getAll($sql);
        foreach ($dados as $index => $valor) {
            $sql = "SELECT * FROM tb_sub_area WHERE status=1 AND id_area=" . $valor["id_area"] . " AND id_item_subarea=0 ORDER BY ordem ";
            $result = self::getConexao()->getAll($sql);
            $dados[$index]["subArea"] = ($result) ? $result : null;
        }
        foreach ($dados as $index => $valorSub) {
            if (is_array($valorSub["subArea"])) {
                foreach ($valorSub["subArea"] as $index2 => $valorSub2) {
                    if ($valorSub2["id_subarea"]) {
                        $sql = "SELECT * FROM tb_sub_area WHERE status=1 AND id_item_subarea=" . $valorSub2["id_subarea"] . " ORDER BY ordem ";
                        $result = self::getConexao()->getAll($sql);
                        $teste[] = $sql;
                        if ($result) {
                            $dados[$index]["subArea"][$index2]["item"] = $result;
                        }
                    }
                }
            }
        }
        $areaAtual = Funcoes::getPastaDoCaminho();
        self::getObjSmarty()->assign("AREA_ATUAL", $areaAtual);
        self::getObjSmarty()->assign("DADOS", $dados);
        self::getObjSmarty()->assign("SUBAREA", $dadosSubArea);
        self::getObjSmarty()->assign("ITENSSUBAREA", $itensSubArea);
        self::getObjSmarty()->assign("PORTAL", PASTA_PORTAL_URL);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_ESPECIFICO . "menuSistema.tpl");
        return $html;
    }

    public function detalhes($get_padrao, $smarty, $param_get) {
        $sql = "SELECT * FROM tb_dc_clientes WHERE id_cliente=" . $param_get['idreg'];
        $dados = self::getConexao()->getRow($sql);
        self::getObjSmarty()->assign("DADOS", $dados);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_ESPECIFICO . "detalhesCliente.tpl");
        die($html);
    }
    public function detalhesProduto($get_padrao, $smarty, $param_get) {
        $sql = "SELECT * FROM tb_dc_produtos WHERE id_produto=" . $param_get['idreg'];
        $dados = self::getConexao()->getRow($sql);
        self::getObjSmarty()->assign("DADOS", $dados);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_ESPECIFICO . "detalhesProduto.tpl");
        die($html);
    }
    public function addEstoque($get_padrao, $smarty, $param_get) {
        $sql = "SELECT * FROM tb_dc_produtos WHERE id_produto=" . $param_get['idreg'];
        $dados = self::getConexao()->getRow($sql);
        self::getObjSmarty()->assign("DADOS", $dados);
        self::getObjSmarty()->assign("ADD", true);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_ESPECIFICO . "AddRemoverEstoque.tpl");
        die($html);
    }
    public function removeEstoque($get_padrao, $smarty, $param_get) {
        $sql = "SELECT * FROM tb_dc_produtos WHERE id_produto=" . $param_get['idreg'];
        $dados = self::getConexao()->getRow($sql);
        self::getObjSmarty()->assign("DADOS", $dados);
        self::getObjSmarty()->assign("REMOVE", true);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_ESPECIFICO . "AddRemoverEstoque.tpl");
        die($html);
    }

}

?>
